package com.cn.wanxi.service.impl;

import com.cn.wanxi.dao.NavDao;
import com.cn.wanxi.model.NavModel;
import com.cn.wanxi.service.NavService;
import com.cn.wanxi.util.IOTool;

import java.io.*;
import java.nio.charset.StandardCharsets;

/**
 * 思路，就是数据来源于文件
 * 1.创建文件
 * 2.写入数据
 * 3.读取数据
 * 4.封装数据
 */
public class NavServiceImpl implements NavService {

    private static final String FILE_NAME = "nav.txt";


    @Override
    public NavModel[] getNavModels() {
//        1.创建文件
//        创建文件的前提：必须由路径，文件夹，文件名
        File file = IOTool.createFile(FILE_NAME);
//        2.写入数据
//                outputStream.write(NavDao.TITLES[i].getBytes(StandardCharsets.UTF_8));
//                outputStream.write("---".getBytes(StandardCharsets.UTF_8));
//                outputStream.write(NavDao.HREFS[i].getBytes(StandardCharsets.UTF_8));
        NavDao navDao = new NavDao();
        String[] data = navDao.data;
        IOTool.saveData(file, data);
//        3.读取数据
        String result = IOTool.readData(file);
//        4.封装数据
        return setData(result);
    }

    /**
     * 封装对象
     *
     * @param result
     * @return
     */
    private NavModel[] setData(String result) {
//        replace 替换

        result = result.replace("[", "");
        result = result.replace("]", "");
//   通过换行符得到数组，，，网站首页---公司页面---新闻介绍，/home---/company---/news
        String[] results = result.split("\n");
//results[0] =网站首页---公司页面---新闻介绍
//        split("---") 就得到title的数组数组
//        int length = results[0].split("---").length;
//需要去掉数组里面的[]

        String[] titles = results[0].split(", ");
        String[] hrefs = results[1].split(", ");
//        for (int i = 0; i < titles.length; i++) {
//            System.out.println(results[i] + "----------" + i);
//        }
        NavModel[] navModels = new NavModel[titles.length];
        for (int i = 0; i < navModels.length; i++) {
            NavModel model = new NavModel();
            model.setTitle(titles[i]);
            model.setHref(hrefs[i]);
            navModels[i] = model;
        }
        return navModels;
    }


}
